home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / diskmags / 0022-3.564 / dmg-0059 / programs / filesel.s < prev    next >
Text File  |  1997-04-16  |  3KB  |  133 lines

  1. ; DIGITAL INSANITY'S FILESELECTOR CALL ACCESSORY
  2. ; ASSEMBLE THIS TO A .ACC FILE AND YOU ARE HOME FREE!
  3.  
  4. start:        lea    newstack(pc),sp
  5.  
  6. ; AES 10: appl_init()
  7.         move.w    #10,opcode
  8.         move.w    #0,sintin
  9.         move.w    #1,sintout
  10.         move.w    #0,saddrin
  11.         move.w    #0,saddrout
  12.         bsr    aes
  13.         move.w    intout,appid
  14.  
  15. ; AES 77: graph_handle()
  16.         move.w    #77,opcode
  17.         move.w    #5,sintout
  18.         move.w    #0,saddrin
  19.         move.w    #0,saddrout
  20.         bsr    aes
  21.         move.w    intout,grhandle
  22.  
  23. ; AES 35: menu_register()
  24.         move.w    #35,opcode
  25.         move.w    #1,sintin
  26.         move.w    #1,sintout
  27.         move.w    #1,saddrin
  28.         move.w    appid,intin
  29.         move.l    #accname,addrin
  30.         bsr    aes
  31.         move.w    intout,accid
  32.  
  33. loop        bsr    event
  34.         cmp.w    #40,msgbuff
  35.         bne.s    loop
  36.         move.w    msgbuff+8,d0
  37.         cmp.w    accid,d0
  38.         bne.s    loop
  39.         bsr    run
  40.         bra.s    loop
  41.  
  42. run        move.w    #$19,-(sp)        ; get drive letter
  43.         trap    #1
  44.         addq.l    #2,sp
  45.         add.b    #'A',d0
  46.         move.b    d0,fs_iinpath        ; move to pathname
  47.         move.b    #':',fs_iinpath+1    ; colon next to it 
  48.         
  49.         clr.w    -(sp)            ; get current directory
  50.         pea    fs_iinpath+2(pc)    ; put it here
  51.         move.w    #$47,-(sp)
  52.         trap    #1
  53.         addq.l    #8,sp
  54.         lea    mask(pc),a0        ; copy *.* to path
  55.         lea    fs_iinpath(pc),a1
  56. test        tst.b    (a1)+
  57.         bne    test
  58.         subq.w    #1,a1
  59.         bsr    strcpy
  60.         lea    name(pc),a0        ; copy name
  61.         lea    fs_insel(pc),a1
  62.         bsr.s    strcpy
  63.  
  64. ; AES 90: Fsel_Input
  65.         move.w    #90,contrl
  66.         move.w    #0,contrl+2
  67.         move.w    #2,contrl+4
  68.         move.w    #2,contrl+6
  69.         move.w    #0,contrl+8
  70.         move.l    #fs_iinpath,addrin
  71.         move.l    #fs_insel,addrin+4
  72.         bsr.s    aes
  73.         rts
  74.  
  75. strcpy        move.b    (a0)+,(a1)
  76.         tst.b    (a1)+
  77.         bne.s    strcpy
  78.         rts
  79.  
  80. ; AES 25: Event_multi
  81. event        move.w    #25,opcode
  82.         move.w    #16,sintin
  83.         move.w    #7,sintout
  84.         move.w    #1,saddrin
  85.         move.l    #msgbuff,addrin
  86.         lea    table(pc),a1
  87.         lea    intin(pc),a2
  88.         moveq    #15,d0
  89. lop1        move.b    (a1)+,(a2)+
  90.         dbra    d0,lop1
  91.         bsr.s    aes
  92.         rts
  93.  
  94. aes        move.l    #aespb,d1
  95.         move.w    #$c8,d0
  96.         trap    #2
  97.         rts
  98.  
  99. table        dc.w $13,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0
  100. accname        dc.b "  Fileselector  ",0
  101.  
  102. mask        dc.b  "\*.*",0
  103. name        dc.b  0
  104.  
  105. fs_iinpath:    ds.b  128
  106. fs_insel:    ds.b  16
  107.  
  108. ; AES parameter block contains a list of addresses used by GEM
  109. aespb:        dc.l contrl,global,intin,intout,addrin,addrout
  110.  
  111. grhandle    ds.w  1
  112. appid        ds.w  1
  113. accid        ds.w  1
  114. msgbuff        ds.b  16
  115.         ds.l  128
  116. newstack    ds.l  80
  117.  
  118. ; control block
  119. contrl
  120. opcode        ds.w  1
  121. sintin        ds.w  1
  122. sintout        ds.w  1
  123. saddrin        ds.w  1
  124. saddrout    ds.l  1
  125.         ds.w  5
  126. global:        ds.l  8
  127.  
  128. intin        ds.w  80
  129. ptsin        ds.w  80
  130. intout        ds.w  80
  131. ptsout        ds.w  80
  132. addrin        ds.w  80
  133. addrout        ds.w  80